1 module geany_d_binding.geany.filetypes;
2 
3 import geany_d_binding.geany.types;
4 
5 /** IDs of known filetypes
6  *
7  * @ref filetypes will contain an item for each. Use GeanyData::filetypes_array to
8  * determine the known filetypes at runtime */
9 enum GeanyFiletypeID
10 {
11     GEANY_FILETYPES_NONE = 0,   /* first filetype is always None & must be 0 */
12 
13     GEANY_FILETYPES_PHP,
14     GEANY_FILETYPES_BASIC,  /* FreeBasic */
15     GEANY_FILETYPES_MATLAB,
16     GEANY_FILETYPES_RUBY,
17     GEANY_FILETYPES_LUA,
18     GEANY_FILETYPES_FERITE,
19     GEANY_FILETYPES_YAML,
20     GEANY_FILETYPES_C,
21     GEANY_FILETYPES_NSIS,
22     GEANY_FILETYPES_GLSL,
23     GEANY_FILETYPES_PO,
24     GEANY_FILETYPES_MAKE,
25     GEANY_FILETYPES_TCL,
26     GEANY_FILETYPES_XML,
27     GEANY_FILETYPES_CSS,
28     GEANY_FILETYPES_REST,
29     GEANY_FILETYPES_HASKELL,
30     GEANY_FILETYPES_JAVA,
31     GEANY_FILETYPES_CAML,
32     GEANY_FILETYPES_AS,
33     GEANY_FILETYPES_R,
34     GEANY_FILETYPES_DIFF,
35     GEANY_FILETYPES_HTML,
36     GEANY_FILETYPES_PYTHON,
37     GEANY_FILETYPES_CS,
38     GEANY_FILETYPES_PERL,
39     GEANY_FILETYPES_VALA,
40     GEANY_FILETYPES_PASCAL,
41     GEANY_FILETYPES_LATEX,
42     GEANY_FILETYPES_ASM,
43     GEANY_FILETYPES_CONF,
44     GEANY_FILETYPES_HAXE,
45     GEANY_FILETYPES_CPP,
46     GEANY_FILETYPES_SH,
47     GEANY_FILETYPES_FORTRAN,
48     GEANY_FILETYPES_SQL,
49     GEANY_FILETYPES_F77,
50     GEANY_FILETYPES_DOCBOOK,
51     GEANY_FILETYPES_D,
52     GEANY_FILETYPES_JS,
53     GEANY_FILETYPES_VHDL,
54     GEANY_FILETYPES_ADA,
55     GEANY_FILETYPES_CMAKE,
56     GEANY_FILETYPES_MARKDOWN,
57     GEANY_FILETYPES_TXT2TAGS,
58     GEANY_FILETYPES_ABC,
59     GEANY_FILETYPES_VERILOG,
60     GEANY_FILETYPES_FORTH,
61     GEANY_FILETYPES_LISP,
62     GEANY_FILETYPES_ERLANG,
63     GEANY_FILETYPES_COBOL,
64     GEANY_FILETYPES_OBJECTIVEC,
65     GEANY_FILETYPES_ASCIIDOC,
66     GEANY_FILETYPES_ABAQUS,
67     GEANY_FILETYPES_BATCH,
68     GEANY_FILETYPES_POWERSHELL,
69     GEANY_FILETYPES_RUST,
70     GEANY_FILETYPES_COFFEESCRIPT,
71     GEANY_FILETYPES_GO,
72     GEANY_FILETYPES_ZEPHIR,
73     /* ^ append items here */
74     GEANY_MAX_BUILT_IN_FILETYPES    /* Don't use this, use filetypes_array->len instead */
75 }
76 
77 enum GeanyFiletypeGroupID
78 {
79     GEANY_FILETYPE_GROUP_NONE,
80     GEANY_FILETYPE_GROUP_COMPILED,
81     GEANY_FILETYPE_GROUP_SCRIPT,
82     GEANY_FILETYPE_GROUP_MARKUP,
83     GEANY_FILETYPE_GROUP_MISC,
84     GEANY_FILETYPE_GROUP_COUNT
85 }
86 
87 /** Represents a filetype. */
88 struct GeanyFiletype
89 {
90     GeanyFiletypeID   id;               /**< Index in @ref filetypes. */
91     /* Represents the TMParserType of tagmanager (see the table
92      * in src/tagmanager/tm_parser.h). */
93     TMParserType      lang;
94     /** Untranslated short name, such as "C", "None".
95      * Must not be translated as it's used for hash table lookups - use
96      * filetypes_get_display_name() instead. */
97     gchar            *name;
98     /** Shown in the file open dialog, such as "C source file". */
99     gchar            *title;
100     gchar            *extension;        /**< Default file extension for new files, or @c NULL. */
101     gchar           **pattern;          /**< Array of filename-matching wildcard strings. */
102     gchar            *context_action_cmd;
103     gchar            *comment_open;
104     gchar            *comment_close;
105     gboolean          comment_use_indent;
106     GeanyFiletypeGroupID group;
107     gchar            *error_regex_string;
108     GeanyFiletype*   lexer_filetype;
109     gchar            *mime_type;
110     GIcon            *icon;
111     gchar            *comment_single; /* single-line comment */
112     /* filetype indent settings, -1 if not set */
113     gint              indent_type;
114     gint              indent_width;
115 
116     GeanyFiletypePrivate* priv;  /* must be last, append fields before this item */
117 }
118 
119 struct GeanyFiletypePrivate;
120 struct TMSourceFile;
121 struct GIcon;